package cn.yunhe.dao;


import cn.yunhe.entity.Question;
import cn.yunhe.pojo.QuestionA;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


@Repository
public interface QuestionDao {

    /**
     * 单个添加
     * @return 成功与否
     */
    boolean addQuestion(Question question);


    /**
     * (发布考试时执行)
     * 根据试卷要求的题目数目,知识点,随机获取多道题目ID
     * @param map
     * @return
     * Map中包含数据 int QuestionCount, List<Integer> PointId
     *
     */
    List<Question> getSeveralQuestion(Map<String, Object> map);


    /**
     * (发布考试,抽取试题后循环执行)
     * 循环将数据插入试卷,试题关系表中
     * @param map
     * Map中包含数据 int ExamPaperId,int QuestionId,
     * @return
     *
     */
    boolean addQuestionsToExamPaper(Map map);


    /**
     * 根据传入试卷Id 获取所属试题集合
     * @param examPaperId
     * @return
     */
    List<Question> getQuestionsByExamPaperId(Integer examPaperId);

    List<Question> getQuestionList();

    /**
     * 查询单题
     * @param id
     * @return
     */
    Question getQuestionById(int id);

    /**
     * (发布考试时执行)
     * 根据试卷要求的题目数目,知识点,随机获取多道题目(判断题)
     * @param map
     * @return
     * Map中包含数据 int JudgmentQuestionCount, List<Integer> PointId
     *
     */
    List<Question> getSeveralJudgmentQuestion(Map<String,Object> map);
    //查询某个域下面的 某个问题类型的 所有数据
    public List<QuestionA> getAllQuesByfieldidqyid(@Param("fid")int fid, @Param("qyid")int qyid);

    //查询某个域下面的 某个问题类型的 所有数据的条数
    public int getAllQuesByfieldidqyidNum(@Param("fid")int fid,@Param("qyid")int qyid);

    /*<!--通过fid获取域类型的名称-->*/
    public String selectfnameByfid(@Param("id")int fid);

    /*<!--通过qyid获取问题类型的名称-->*/
    public String  getqynameByqyId(@Param("qyid")int qyid);
    /**
     * 根据专业获取20到题目
     * @return
     */
    List<Question> getquestion(int fieldId);
}